// server/trpc.ts
import { initTRPC, TRPCError } from '@trpc/server';
import { cache } from 'react';
import { auth } from '@/auth'; // 导入你的 auth 配置

export const createTRPCContext = cache(async (opts?: { headers?: Headers }) => {
  // 获取当前会话
  const session = await auth();
  
  return {
    // 上下文数据
    session,
    user: session?.user, // 直接暴露用户信息
    headers: opts?.headers,
    // 可以添加其他你需要的上下文数据
  };
});

const t = initTRPC.context<typeof createTRPCContext>().create();

// 基础路由和过程助手
export const createTRPCRouter = t.router;
export const createCallerFactory = t.createCallerFactory;

// 基础过程
export const baseProcedure = t.procedure;

// 认证过程（需要登录）
export const protectedProcedure = baseProcedure.use(async (opts) => {
  console.log(opts,"这里数据")
  if (!opts.ctx.user) {
    throw new TRPCError({ code: 'UNAUTHORIZED' });
  }
  return opts.next({
    ctx: {
      // 传递用户信息给后续中间件和解析器
      user: opts.ctx.user,
    },
  });
});